package com.bsoft.gol.hbs.service.impl;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.bsoft.gol.hbs.dao.MsgTemplateDao;
import com.bsoft.gol.hbs.dao.MsgTemplateLevelDao;
import com.bsoft.gol.hbs.dao.MsgTemplateMsgTypeDao;
import com.bsoft.gol.hbs.dao.MsgTemplateWxConfigureDao;
import com.bsoft.gol.hbs.dao.MsgTplWxDao;
import com.bsoft.gol.hbs.utils.CommonUtils;
import ctd.controller.exception.ControllerException;
import ctd.spring.boot.annotation.SsdevService;
import ctd.util.KeyGenerator;
import ctd.util.annotation.RpcService;
import hc.message.entity.MsgTplWx;
import hcn.base.Doctor;
import hcn.base.MsgTemplate;
import hcn.base.MsgTemplateLevel;
import hcn.base.MsgTemplateMsgType;
import hcn.base.MsgTemplateWxConfigure;
import hcn.bean.PushMessageBean;
import hcn.enums.MsgType;
import hcn.enums.MsgVariable;
import hcn.service.base.IMsgManageService;
import hcn.service.base.qo.MsgTemplateLevelQo;
import hcn.service.base.sendMsg.IMessageSyncService;
import hcn.util.BaseResponse;
import hcn.util.ResultCode;
import org.apache.commons.collections.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import pcn.bean.consultation.EditInitQo;
import pcn.bean.consultation.MsgManageAddOrUpdateQo;
import pcn.bean.consultation.MsgManageDetailQo;
import pcn.bean.consultation.MsgManageListQo;
import pcn.vo.consultation.ConfiguredURLVo;
import pcn.vo.consultation.EditInitVo;
import pcn.vo.consultation.MsgManageDetailVo;
import pcn.vo.consultation.MsgManageListVo;
import pcn.vo.consultation.MsgTemplateVo;
import pcn.vo.consultation.MsgTypeVo;
import service.rpc.DoctorInfoServiceIntf;

import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;

/**
 * @author zhengcb10708
 * @describe 消息管理接口实现
 * @create 2020-09-17 10:09
 */
@SsdevService(auth = false, id = "msgManageService")
public class MsgManageService implements IMsgManageService {
    private static final Logger logger = LoggerFactory.getLogger(MsgManageService.class);

    @Autowired
    private MsgTemplateDao msgTemplateDao;
    @Autowired
    private MsgTemplateMsgTypeDao msgTemplateMsgTypeDao;
    @Autowired
    private MsgTemplateWxConfigureDao msgTemplateWxConfigureDao;
    @Autowired
    private MsgTplWxDao msgTplWxDao;
    @Autowired
    private DoctorInfoServiceIntf doctorInfoServiceIntf;
    @Autowired
    private IMessageSyncService messageSyncService;
    @Autowired
    private MsgTemplateLevelDao msgTemplateLevelDao;

    /**
    *
    *@describe 查询消息模板列表
    *@throws
    *@author zhengcb10708
    *@date 2020/9/17 10:11
    */
    @Override
    @RpcService
    public MsgManageListVo list(MsgManageListQo msgManageListQo) {
        logger.info("执行MsgManageListVo.list方法,入参:"+msgManageListQo.toString());
        Long count = msgTemplateDao.getMsgTemplateCount(msgManageListQo);
        List<MsgTemplate> list = msgTemplateDao.getMsgTemplateList(msgManageListQo);

        ArrayList<MsgTemplateVo> MsgTemplateVos = new ArrayList<>();
        if (null != list && list.size() > 0) {
            for (MsgTemplate msgTemplate :
                    list) {
                MsgTemplateVo MsgTemplateVo = new MsgTemplateVo();
                BeanUtils.copyProperties(msgTemplate, MsgTemplateVo);
                ArrayList<String> msgTemplateMsgTypeList = getMsgTemplateMsgTypeList(msgTemplate.getMsgTemplateId());
                if (null != msgTemplateMsgTypeList && msgTemplateMsgTypeList.size() > 0) {
                    String msgTemplateMsgTypeNames = "";
                    for (int i = 0; i < msgTemplateMsgTypeList.size(); i++) {
                        String msgTypeKey = msgTemplateMsgTypeList.get(i);
                        MsgType msgType = MsgType.getEnumByKey(msgTypeKey);
                        if (null != msgType) {
                            if (i != 0) {
                                msgTemplateMsgTypeNames += ";";
                            }
                            msgTemplateMsgTypeNames += msgType.getMsgTypeValue();
                        }
                    }
                    MsgTemplateVo.setMsgTemplateMsgTypeNames(msgTemplateMsgTypeNames);
                }
                MsgTemplateVos.add(MsgTemplateVo);
            }
        }
        MsgManageListVo MsgManageListVo = new MsgManageListVo();
        MsgManageListVo.setTotal(count);
        MsgManageListVo.setMsgTemplateList(MsgTemplateVos);
        return MsgManageListVo;
    }
    /**
    *
    *@describe 得到消息模板的消息类型列表
    *@throws
    *@author zhengcb10708
    *@date 2020/9/18 14:16
    */
    private ArrayList<String> getMsgTemplateMsgTypeList(long msgTemplateId) {
        ArrayList<String> msgTemplateMsgTypeList = new ArrayList<>();
        List<MsgTemplateMsgType>  msgTemplateMsgTypes = msgTemplateMsgTypeDao.getMsgTemplateMsgTypeList(msgTemplateId);
        if (null != msgTemplateMsgTypes && msgTemplateMsgTypes.size() > 0) {
            for (MsgTemplateMsgType msgTemplateMsgType : msgTemplateMsgTypes) {
                msgTemplateMsgTypeList.add(msgTemplateMsgType.getMsgTypeKey());
            }
        }
        return msgTemplateMsgTypeList;
    }

    /**
     *
     *@describe 根据主键查询消息模板详情
     *@throws
     *@author zhengcb10708
     *@date 2020/9/17 13:35
     */
    @Override
    @RpcService
    public MsgManageDetailVo detail(MsgManageDetailQo msgManageDetailQo) throws ControllerException {
        logger.info("执行MsgManageListVo.detail方法,入参msgTemplateId:"+msgManageDetailQo.getMsgTemplateId());
        MsgManageDetailVo MsgManageDetailVo = new MsgManageDetailVo();
        Long msgTemplateId=msgManageDetailQo.getMsgTemplateId();
        MsgTemplate msgTemplate = msgTemplateDao.getMsgTemplateId(msgTemplateId);
        if (CommonUtils.isNotNull(msgTemplate)) {
            BeanUtils.copyProperties(msgTemplate,MsgManageDetailVo);
            MsgManageDetailVo.setMsgTemplateMsgTypeList(getMsgTemplateMsgTypeList(msgTemplate.getMsgTemplateId()));
            //查询微信公众号集小程序消息参数配置信息
            List<MsgTemplateWxConfigure> configureList=msgTemplateWxConfigureDao.getMsgTemplateWxConfigureList(msgTemplateId);
            if(CollectionUtils.isNotEmpty(configureList)){
               MsgManageDetailVo.setTemplateWxConfigure(configureList.get(0));
            }

        } else {
            logger.error("传入的msgTemplateId有误，没有查询到数据");
            throw new ControllerException("传入的msgTemplateId有误，没有查询到数据");
        }
        return MsgManageDetailVo;
    }
    /**
     * @Describe:根据租户id及模板编号查询模板详情
     * @Param: [templateCode, tenantId]
     * @Return: pcn.vo.consultation.MsgManageDetailVo
     * @Author: zhengcb10708
     * @Date: 2020/9/25 13:46
     */
    @Override
    @RpcService
    public MsgManageDetailVo detailByTempCodeAndTenantId(String templateCode,String tenantId) throws ControllerException {
        logger.info("执行MsgManageListVo.detail方法,入参templateCode:"+templateCode +"====tenantId:"+tenantId);
        MsgManageDetailVo MsgManageDetailVo = new MsgManageDetailVo();
        MsgTemplate msgTemplate = msgTemplateDao.getMsgTemplateCodeAndTenantId(templateCode,tenantId);
        if (CommonUtils.isNotNull(msgTemplate)) {
            BeanUtils.copyProperties(msgTemplate,MsgManageDetailVo);
            MsgManageDetailVo.setMsgTemplateMsgTypeList(getMsgTemplateMsgTypeList(msgTemplate.getMsgTemplateId()));
            //查询微信公众号集小程序消息参数配置信息
            List<MsgTemplateWxConfigure> configureList=msgTemplateWxConfigureDao.getMsgTemplateWxConfigureList(msgTemplate.getMsgTemplateId());
            if(CollectionUtils.isNotEmpty(configureList)){
                MsgManageDetailVo.setTemplateWxConfigure(configureList.get(0));
            }

        } else {
            logger.error("传入的msgTemplateId有误，没有查询到数据");
            throw new ControllerException("传入的msgTemplateId有误，没有查询到数据");
        }
        return MsgManageDetailVo;
    }
    /**
     * @Describe: 根据租户id及消息类枚举名称查询模板详情
     * @Param: [s, s1]
     * @Return: pcn.vo.consultation.MsgManageDetailVo
     * @Author: zhengcb10708
     * @Date: 2020/9/29 10:38
     */
    @Override
    @RpcService
    public MsgManageDetailVo detailByNotificateTypeAndTenantId(String notificateType,String tenantId) throws ControllerException {
        logger.info("执行MsgManageListVo.detail方法,入参templateCode:"+notificateType +"====tenantId:"+tenantId);
        MsgManageDetailVo MsgManageDetailVo = new MsgManageDetailVo();
        MsgTemplate msgTemplate = msgTemplateDao.getMsgNotificateTypeAndTenantId(notificateType,tenantId);
        if (CommonUtils.isNotNull(msgTemplate)) {
            BeanUtils.copyProperties(msgTemplate,MsgManageDetailVo);
            MsgManageDetailVo.setMsgTemplateMsgTypeList(getMsgTemplateMsgTypeList(msgTemplate.getMsgTemplateId()));
            //查询微信公众号集小程序消息参数配置信息
            List<MsgTemplateWxConfigure> configureList=msgTemplateWxConfigureDao.getMsgTemplateWxConfigureList(msgTemplate.getMsgTemplateId());
            if(CollectionUtils.isNotEmpty(configureList)){
                MsgManageDetailVo.setTemplateWxConfigure(configureList.get(0));
            }

        } else {
            logger.error("传入的notificateType有误，没有查询到数据");
            throw new ControllerException("传入的notificateType有误，没有查询到数据");
        }
        return MsgManageDetailVo;
    }

    @Override
    public MsgManageDetailVo detailBySmsServiceTypeAndTenantId(String smsserviceType,String tenantId) throws ControllerException {
        logger.info("执行MsgManageListVo.detail方法,入参smsserviceType:"+smsserviceType +"====tenantId:"+tenantId);
        MsgManageDetailVo MsgManageDetailVo = new MsgManageDetailVo();
        MsgTemplate msgTemplate = msgTemplateDao.getMsgBySmsServiceTypeAndTenantId(smsserviceType,tenantId);
        if (CommonUtils.isNotNull(msgTemplate)) {
            BeanUtils.copyProperties(msgTemplate,MsgManageDetailVo);
            MsgManageDetailVo.setMsgTemplateMsgTypeList(getMsgTemplateMsgTypeList(msgTemplate.getMsgTemplateId()));
            //查询微信公众号集小程序消息参数配置信息
            List<MsgTemplateWxConfigure> configureList=msgTemplateWxConfigureDao.getMsgTemplateWxConfigureList(msgTemplate.getMsgTemplateId());
            if(CollectionUtils.isNotEmpty(configureList)){
                MsgManageDetailVo.setTemplateWxConfigure(configureList.get(0));
            }

        } else {
            logger.error("传入的notificateType有误，没有查询到数据");
            throw new ControllerException("传入的notificateType有误，没有查询到数据");
        }
        return MsgManageDetailVo;
    }

    /**
     *
     *@describe	新增/修改消息模板
     *@throws
     *@author zhengcb10708
     *@date 2020/9/17 13:45
     */
    @Override
    @RpcService
    @Transactional
    public void addOrUpdate(MsgManageAddOrUpdateQo msgManageAddOrUpdateQo) throws ControllerException{
        logger.info("执行MsgManageListVo.addOrUpdate方法,入参MsgManageAddOrUpdateQo:"+msgManageAddOrUpdateQo.toString());
        checkAddOrUpdateParams(msgManageAddOrUpdateQo);
        if (CommonUtils.isEmpty(msgManageAddOrUpdateQo.getMsgTemplateMsgTypeList())) {
            logger.error("保存失败,必须至少选择一个消息类型");
            throw new ControllerException("保存失败,必须至少选择一个消息类型");
        }
        boolean isNew = true;
        if (null != msgManageAddOrUpdateQo.getMsgTemplateId() && msgManageAddOrUpdateQo.getMsgTemplateId() > 0L) {
            isNew = false;
        }
        try {

            Timestamp nowTime = new Timestamp(System.currentTimeMillis());
            MsgTemplate msgTemplate = new MsgTemplate();
            BeanUtils.copyProperties(msgManageAddOrUpdateQo, msgTemplate);
            msgTemplate.setLastModifiedDate(nowTime);
            msgTemplate.setLastModifiedUserId(msgManageAddOrUpdateQo.getUserId());
            Long count = msgTemplateDao.getMsgTemplateCount(msgManageAddOrUpdateQo.getTemplateCode(), msgManageAddOrUpdateQo.getTenantId(), (long) 0);
            if (isNew && count > 0) {
                logger.error("同租户下自定义代码不能与其他消息模板的自定义代码重复");
                throw new ControllerException("同租户下自定义代码不能与其他消息模板的自定义代码重复");
            }
            if (!isNew) {
                Long count2 = msgTemplateDao.getMsgTemplateCount(msgManageAddOrUpdateQo.getTemplateCode(), msgManageAddOrUpdateQo.getTenantId(), msgManageAddOrUpdateQo.getMsgTemplateId());
                if (count2 > 0) {
                    logger.error("同租户下自定义代码不能与其他消息模板的自定义代码重复");
                    throw new ControllerException("同租户下自定义代码不能与其他消息模板的自定义代码重复");
                }
            }
            if (!isNew) {
                MsgTemplate msgTemplateOld= msgTemplateDao.getMsgTemplateId(msgManageAddOrUpdateQo.getMsgTemplateId());
                //修改
                msgTemplate.setCreateDate(msgTemplateOld.getCreateDate());
                msgTemplate.setCreateUserId(msgTemplateOld.getCreateUserId());
                msgTemplate.setStatus(1);
                msgTemplate.setMsgTemplateId(msgManageAddOrUpdateQo.getMsgTemplateId());
                msgTemplateDao.updateMsgTemplate(msgTemplate);
            } else {
                //新增
                msgTemplate.setCreateDate(nowTime);
                msgTemplate.setCreateUserId(msgManageAddOrUpdateQo.getUserId());
                msgTemplate.setStatus(1);
                msgTemplateDao.addMsgTemplate(msgTemplate);
            }
            logger.info("isNew:"+isNew+"====msgManageAddOrUpdateQo.getMsgTemplateId():"+msgManageAddOrUpdateQo.getMsgTemplateId());
            if (!isNew) {
                //删除对应的msgTemplateMsgType
                msgTemplateMsgTypeDao.deleteMsgTemplateMsgType(msgManageAddOrUpdateQo.getMsgTemplateId());
            }
            msgTemplate = msgTemplateDao.getMsgTemplateCodeAndTenantId(msgManageAddOrUpdateQo.getTemplateCode(),msgManageAddOrUpdateQo.getTenantId());
            JSONArray array= JSONArray.parseArray(JSON.toJSONString(msgManageAddOrUpdateQo.getMsgTemplateMsgTypeList()));
            logger.info("MsgTemplateMsgTypeArray"+array);
            List<MsgTemplateMsgType>  msgTemplateMsgTypeList=msgTemplateMsgTypeDao.getMsgTemplateMsgTypeList(msgManageAddOrUpdateQo.getMsgTemplateId());
            JSONArray qryArray= JSONArray.parseArray(JSON.toJSONString(msgTemplateMsgTypeList));
            logger.info("MsgTemplateMsgTypeArray"+qryArray);
            for (MsgTemplateMsgType msgTemplateMsgType :
                    msgManageAddOrUpdateQo.getMsgTemplateMsgTypeList()) {
                msgTemplateMsgType.setMsgTemplateId(msgTemplate.getMsgTemplateId());
                msgTemplateMsgTypeDao.addMsgTemplateMsgType(msgTemplateMsgType);
            }
            MsgTemplateWxConfigure configure = msgManageAddOrUpdateQo.getTemplateWxConfigure();
            if (configure != null) {
                if(!isNew){
                    //删除原有模板的微信配置
                    msgTemplateWxConfigureDao.deleteMsgTemplateWxConfigureByTemplateId(configure.getTemplateId());
                }
                configure.setTemplateId(msgTemplate.getMsgTemplateId());
                configure.setGmtCreate(configure.getGmtCreate()==null?new Timestamp(System.currentTimeMillis()):configure.getGmtCreate());
                configure.setGmtModified(new Timestamp(System.currentTimeMillis()));
                msgTemplateWxConfigureDao.addMsgTemplateWxConfigure(configure);
                addOrUpdateWxConfig(msgManageAddOrUpdateQo);
            }
        }catch (Exception e){
            e.printStackTrace();
            logger.error("执行方法addOrUpdate出错，原因:"+e.getMessage());
            throw new ControllerException("执行方法addOrUpdate出错，原因:"+e.getMessage());
        }
    }
    //新增或者修改消息中心_微信模板消息配置
    private void addOrUpdateWxConfig(MsgManageAddOrUpdateQo msgManageAddOrUpdateQo) throws ControllerException{

        MsgTemplateWxConfigure configure = msgManageAddOrUpdateQo.getTemplateWxConfigure();
        if (configure != null) {
            //微信公众号模板id
            if(CommonUtils.isNotEmpty(configure.getSubscriptionTemplateId())){
                Long wxcount = msgTplWxDao.getMsgTplWxeCountByWxTplId(configure.getSubscriptionTemplateId());
                MsgTplWx msgTplWx = new MsgTplWx();
                msgTplWx.setWxTplId(configure.getSubscriptionTemplateId());
                msgTplWx.setTplName(msgManageAddOrUpdateQo.getTemplateName());
                msgTplWx.setTenantId(msgManageAddOrUpdateQo.getTenantId());
                msgTplWx.setTplCode(configure.getSubscriptionTemplateCode());
                msgTplWx.setAppId(configure.getAppId());
                msgTplWx.setGroupId(1);
                msgTplWx.setStatus(new Byte("0"));
                if (wxcount > 0) {//更新
                    msgTplWxDao.update(msgTplWx);
                } else {//新增
                    msgTplWxDao.save(msgTplWx);
                }
            }
            //微信小程序模板id
            if(CommonUtils.isNotEmpty(configure.getAppletsTemplateId())){
                Long wxcount = msgTplWxDao.getMsgTplWxeCountByWxTplId(configure.getAppletsTemplateId());
                MsgTplWx msgTplWx = new MsgTplWx();
                msgTplWx.setWxTplId(configure.getAppletsTemplateId());
                msgTplWx.setTplName(msgManageAddOrUpdateQo.getTemplateName());
                msgTplWx.setTenantId(msgManageAddOrUpdateQo.getTenantId());
                msgTplWx.setTplCode(UUID.randomUUID().toString());
                msgTplWx.setAppId(configure.getAppId());
                msgTplWx.setGroupId(1);
                msgTplWx.setStatus(new Byte("0"));
                if (wxcount > 0) {//更新
                    msgTplWxDao.update(msgTplWx);
                } else {//新增
                    msgTplWxDao.save(msgTplWx);
                }
            }
        }
    }
    //新增/修改消息模板必要参数校验
    private void checkAddOrUpdateParams(MsgManageAddOrUpdateQo msgManageAddOrUpdateQo) throws ControllerException{
        if (CommonUtils.isEmpty(msgManageAddOrUpdateQo.getUserId())) {
            throw new ControllerException("用户ID不能为空");
        }
        if (CommonUtils.isEmpty(msgManageAddOrUpdateQo.getTenantId())) {
            throw new ControllerException("租户ID不能为空");
        }
        if (CommonUtils.isEmpty(msgManageAddOrUpdateQo.getTemplateName())) {
            throw new ControllerException("模板名称不能为空");
        }
        if (CommonUtils.isEmpty(msgManageAddOrUpdateQo.getTemplateContent())) {
            throw new ControllerException("模板内容不能为空");
        }
        if (CommonUtils.isEmpty(msgManageAddOrUpdateQo.getTemplateCode())) {
            throw new ControllerException("模板编码不能为空");
        }
        if (CommonUtils.isEmpty(msgManageAddOrUpdateQo.getMsgTemplateMsgTypeList())) {
            throw new ControllerException("消息模板勾选的消息类型列表不能为空");
        }
    }

    /**
     *
     *@describe 消息模板编辑界面初始化
     *@throws
     *@author zhengcb10708
     *@date 2020/9/17 13:56
     */
    @Override
    @RpcService
    public EditInitVo editInit(EditInitQo editInitQo) {
        ArrayList<MsgTypeVo> msgTypeList = new ArrayList<>();
        ArrayList<String> msgVariableList = new ArrayList<>();
        for (MsgType msgType :
                MsgType.values()) {
            MsgTypeVo MsgTypeVo = new MsgTypeVo();
            MsgTypeVo.setMsgTypeKey(msgType.getMsgTypeKey());
            MsgTypeVo.setMsgTypeValue(msgType.getMsgTypeValue());
            msgTypeList.add(MsgTypeVo);
        }
        for (MsgVariable msgVariable :
                MsgVariable.values()) {
            msgVariableList.add(msgVariable.getMsgVariableKey());
        }
        EditInitVo EditInitVo = new EditInitVo();
        EditInitVo.setMsgTypeList(msgTypeList);
        EditInitVo.setMsgVariableList(msgVariableList);
        return EditInitVo;
    }

    /**
     *
     *@describe 查询已配置的URL
     *@throws
     *@author zhengcb10708
     *@date 2020/9/17 14:15
     */
    @Override
    @RpcService
    @Deprecated
    public List<ConfiguredURLVo> getConfiguredURL() {

        return null;
    }
    /**
     * @Describe: 测试发送消息方法
     * @Param: [pushMessageBean]
     * @Return: void
     * @Author: zhengcb10708
     * @Date: 2020/9/29 11:02
     */
    @Override
    @RpcService
    public void TestPushMsg(PushMessageBean pushMessageBean) throws ControllerException {

        Doctor doctor=doctorInfoServiceIntf.getDoctorByPhoneNo(pushMessageBean.getMobile());
        BaseResponse baseResponse = new BaseResponse();
        if(doctor!=null){
            Doctor doctor1=doctorInfoServiceIntf.getById(doctor.getDoctorId());
            pushMessageBean.setDoctorIds(new String[]{doctor.getDoctorId()});

            Map<String,String> map=new HashMap<String, String>();
            map.put("#科室名称#","健康科");
            map.put("#医生姓名#","郑大夫");
            pushMessageBean.setMsgVariableMap(map);

            Map<String,String>  extra=new HashMap<String,String>();
            extra.put("orgCode","10001");
            extra.put("cityCode","cs001");
            pushMessageBean.setExtras(extra);

            baseResponse= messageSyncService.productionMessage(pushMessageBean);
            if(ResultCode.SUCCESS!=baseResponse.getCode()){
                throw new ControllerException(baseResponse.getMessage());
            }
        }

    }

    /**
     * @Author:FangZhiYi
     * @Description 新增或修改消息级别
     * @Params [templateLevelQo]
     * @Return void
     * @Data Created in 2022/10/26 9:50
     * @Moddified By:
     */
    @Override
    @RpcService
    public MsgTemplateLevel updateMsgLevel(MsgTemplateLevelQo templateLevelQo) throws ControllerException {
        MsgTemplateLevel msgTemplateLevel = new MsgTemplateLevel();
        if (StringUtils.isEmpty(templateLevelQo.getRecordId())) {
            //新增
            BeanUtils.copyProperties(templateLevelQo, msgTemplateLevel);
            msgTemplateLevel.setRecordId(KeyGenerator.randomGenerate());
            msgTemplateLevel.setGmtCreate(new Date());
            msgTemplateLevelDao.save(msgTemplateLevel);
        } else {
            //修改
            msgTemplateLevel = msgTemplateLevelDao.get(templateLevelQo.getRecordId());
            if (null != msgTemplateLevel) {
                msgTemplateLevel.setMsgLevel(templateLevelQo.getMsgLevel());
                msgTemplateLevel.setGmtModified(new Date());
                msgTemplateLevelDao.update(msgTemplateLevel);
            } else {
                throw new ControllerException("消息模板不存在");
            }
        }
        return msgTemplateLevel;
    }


    /**
     * @Author:FangZhiYi
     * @Description 查询消息模板的消息级别
     * @Params [templateLevelQo]
     * @Return hcn.service.base.qo.MsgTemplateLevelQo
     * @Data Created in 2022/10/26 10:01
     * @Moddified By:
     */
    @Override
    @RpcService
    public MsgTemplateLevelQo getMsgLevel(MsgTemplateLevelQo templateLevelQo) throws ControllerException {
        MsgTemplateLevel msgTemplateLevel = msgTemplateLevelDao.getMsgLevelByTemplateId(templateLevelQo.getTemplateId());
        if (null != msgTemplateLevel) {
            BeanUtils.copyProperties(msgTemplateLevel, templateLevelQo);
            if(templateLevelQo.getMsgLevel()==1){
                templateLevelQo.setMsgLevelStr("1");
            }else{
                templateLevelQo.setMsgLevelStr("0");
            }
        } else {
            templateLevelQo.setMsgLevel((byte) 0);
            templateLevelQo.setMsgLevelStr("0");
        }
        return templateLevelQo;
    }

    /**
     * @Describe: 测试发送短信
     * @Param: [pushMessageBean]
     * @Return: void
     * @Author: zhengcb10708
     * @Date: 2020/10/9 10:25
     */
    @RpcService
    public void TestSendMoblieMsg(PushMessageBean pushMessageBean) throws ControllerException {
        Doctor doctor=doctorInfoServiceIntf.getDoctorByPhoneNo(pushMessageBean.getMobile());
        if(doctor!=null){
            pushMessageBean.setDoctorIds(new String[]{doctor.getDoctorId()});

            Map<String,String> map=new HashMap<String, String>();
            map.put("#科室名称#","健康科");
            map.put("#医生姓名#","郑大夫");
            pushMessageBean.setMsgVariableMap(map);

            Map<String,String>  extra=new HashMap<String,String>();
            extra.put("orgCode","10001");
            extra.put("cityCode","cs001");
            pushMessageBean.setExtras(extra);

            messageSyncService.productionMessage(pushMessageBean);
        }

    }

}
